#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[1001],n[1001],v[1001];
int main()
{
	int T,N,V;
	cin>>T;
	while(T--)
	{
		cin>>N>>V;
		memset(dp,0,sizeof dp);
		for(int i=1;i<=N;i++)
			cin>>n[i];
		for(int i=1;i<=N;i++)
			cin>>v[i];
		for(int i=1;i<=N;i++)
		{
			for(int j=V;j>=v[i];j--)
			{
				if(j>=v[i])
					dp[j]=max(dp[j],dp[j-v[i]]+n[i]);
			}
		}
		cout<<dp[V]<<endl;
	}
    return 0;
}
